package app.services.impl;

import java.util.List;

import app.models.Usuario;
import app.models.enums.StatusUsuario;
import app.repositories.Repository;
import app.repositories.UsuarioRepository;
import app.services.UsuarioService;
import br.com.caelum.vraptor.ioc.Component;

@Component
public class UsuarioServiceImpl extends GenericServiceImpl<Usuario, Long> implements UsuarioService{

	private UsuarioRepository repository;
	
	public UsuarioServiceImpl(UsuarioRepository repository){
		this.repository = repository;
		super.setGenericRepository((Repository<Usuario, Long>) repository);
	}
	
	public Usuario autentication(String usuario, String senha){
		return repository.autentication(usuario, senha);
	}
	
	public List<Usuario> findUsuariosByFilter(String filter) {
		return repository.findByFilter(filter);
	}
	
	public List<Usuario> findAllOrdered() {
		return repository.findAllOrdered();
	}
	
	public List<Usuario> findLasUsuarios() {
		return repository.findLasUsuarios();
	}
	
	public void activeOrInactiveStatus(Usuario usuario){
		
		if (StatusUsuario.ATIVO.equals(usuario.getStatus())){
			usuario.setStatus(StatusUsuario.INATIVO);
		} else {
			usuario.setStatus(StatusUsuario.ATIVO);
		}
		
		update(usuario);
	}
	
	public Boolean validateNameLength(Usuario usuario) {
		if(usuario.getNome().length() < 4){
			return true;
		}
		return false;
	}
	
	public Boolean verifyIfUsuarioIsActive(Long id){
		
		Usuario usuario = find(id);
		
		return usuario.getStatus().equals(StatusUsuario.ATIVO);
	}
	
}
